home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / eselect / modules / kernel.eselect < prev    next >
Text File  |  2006-04-12  |  3KB  |  113 lines

  1. # Copyright 1999-2005 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Id: kernel.eselect 220 2005-10-17 13:30:18Z ka0ttic $
  4.  
  5. DESCRIPTION="Manage the /usr/src/linux symlink"
  6. MAINTAINER="ciaranm@gentoo.org"
  7. SVN_DATE='$Date: 2005-10-17 14:30:18 +0100 (Mon, 17 Oct 2005) $'
  8. VERSION=$(svn_date_to_version "${SVN_DATE}" )
  9.  
  10. # find a list of kernel symlink targets
  11. find_targets() {
  12.     for f in ${ROOT}/usr/src/linux-[[:digit:]]* ; do
  13.         [[ -d ${f} ]] && echo $(basename ${f} )
  14.     done
  15. }
  16.  
  17. # try to remove the kernel symlink
  18. remove_symlink() {
  19.     rm "${ROOT}/usr/src/linux"
  20. }
  21.  
  22. # set the kernel symlink
  23. set_symlink() {
  24.     target=${1}
  25.     if is_number "${target}" ; then
  26.         targets=( $(find_targets ) )
  27.         target=${targets[$(( ${target} - 1 ))]}
  28.     fi
  29.     if [[ -z ${target} ]] ; then
  30.         die -q "Target \"${1}\" doesn't appear to be valid!"
  31.     elif [[ -d "${ROOT}/usr/src/${target}" ]] ; then
  32.         pushd "${ROOT}/usr/src" 1>/dev/null
  33.         ln -s "${target}" "linux"
  34.         popd 1>/dev/null
  35.     else
  36.         die -q "Target \"${1}\" doesn't appear to be valid!"
  37.     fi
  38. }
  39.  
  40. ### show action ###
  41.  
  42. describe_show() {
  43.     echo "Show the current kernel symlink"
  44. }
  45.  
  46. do_show() {
  47.     write_list_start "Current kernel symlink:"
  48.     if [[ -L "${ROOT}/usr/src/linux" ]] ; then
  49.         write_kv_list_entry "$(readlink ${ROOT}/usr/src/linux )" ""
  50.     else
  51.         write_kv_list_entry "(unset)" ""
  52.     fi
  53. }
  54.  
  55. ### list action ###
  56.  
  57. describe_list() {
  58.     echo "List available kernel symlink targets"
  59. }
  60.  
  61. do_list() {
  62.     targets=( $(find_targets ) )
  63.     write_list_start "Available kernel symlink targets:"
  64.     if [[ -n ${targets[@]} ]] ; then
  65.         local i
  66.         for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
  67.             [[ ${targets[${i}]} == $(readlink ${ROOT}/usr/src/linux ) ]] && \
  68.                 targets[${i}]="${targets[${i}]} $(highlight '*' )"
  69.         done
  70.         write_numbered_list "${targets[@]}"
  71.     else
  72.         write_kv_list_entry "(none found)" ""
  73.     fi
  74. }
  75.  
  76. ### set action ###
  77.  
  78. describe_set() {
  79.     echo "Set a new kernel symlink target"
  80. }
  81.  
  82. describe_set_parameters() {
  83.     echo "<target>"
  84. }
  85.  
  86. describe_set_options() {
  87.     echo "target : Target name or number (from 'list' action)"
  88. }
  89.  
  90. do_set() {
  91.     if [[ -z ${1} ]] ; then
  92.         # no parameter
  93.         die -q "You didn't tell me what to set the symlink to"
  94.  
  95.     elif [[ -L "${ROOT}/usr/src/linux" ]] ; then
  96.         # existing symlink
  97.         if ! remove_symlink ; then
  98.             die -q "Couldn't remove existing symlink"
  99.         elif ! set_symlink "${1}" ; then
  100.             die -q "Couldn't set a new symlink"
  101.         fi
  102.  
  103.     elif [[ -e "${ROOT}/usr/src/linux" ]] ; then
  104.         # we have something strange
  105.         die -q "Sorry, ${ROOT}/usr/src/linux confuses me"
  106.  
  107.     else
  108.         set_symlink "${1}" || die -q "Couldn't set a new symlink"
  109.     fi
  110. }
  111.  
  112. # vim: set ft=eselect :
  113.